package com.sxj.corejava.code07_面向对象.租车系统;

import java.util.Scanner;

/**
 * @author 石小俊
 * 2024年07月16日 14:50
 */
public class Test {

    public static void main(String[] args) {
        showMenu();
    }

    public static void showMenu() {
        // 1.进入租车系统,输入客户信息
        Scanner sc = new Scanner(System.in);
        System.out.println("****************欢迎来到紫金租车店****************");
        System.out.print("请输入客户姓名:");
        String name = sc.next();
        System.out.print("请输入客户手机号:");
        String phone = sc.next();
        Customer customer = new Customer(name, phone);

        // 2.选择需要租赁的汽车类型(轿车、客车、退出)以及具体的车型(根据选择的类型不同展示不同的车型)
        // 租车时可以租赁多辆汽车
        // 准备一个机动车数组,用于存储租赁的所有机动车信息
        // 由于数组在初始化时必须指定长度,但是对于用户而言,无法确定每个用户租赁的数量
        // 因此,我们可以设置一个较大的值,作为最大值
        MotorVehicle[] vehicles = new MotorVehicle[100];
        // 定义一个初始变量,表示当前进来的客户已租赁的机动车数量
        int index = 0;
        while (true) {
            System.out.print("请选择租赁的汽车类型(1.轿车 2.客车 3.退出):");
            int choice = sc.nextInt();
            if (choice == 1) {
                // 如果选择的是轿车,则需要选择对应轿车的型号
                System.out.print("请选择轿车型号(1.宝马X1 2.奔驰GLC 3.保时捷帕拉梅拉 4.劳斯莱斯幻影):");
                int num = sc.nextInt();
                switch (num) {
                    case 1:
                        MotorVehicle vehicle = new Car("苏A00001", "宝马", MotorVehicleConstant.BMW_X1);
                        vehicles[index++] = vehicle;
                        break;
                    case 2:
                        vehicles[index++] = new Car("苏A00002", "奔驰", MotorVehicleConstant.BENZ_GLC);
                        break;
                    case 3:
                        vehicles[index++] = new Car("苏A00003", "保时捷", MotorVehicleConstant.PORSCHE_PANAMERA);
                        break;
                    case 4:
                        vehicles[index++] = new Car("苏A00004", "劳斯莱斯", MotorVehicleConstant.ROLLS_ROYCE_PHANTOM);
                        break;
                    default:
                        System.out.println("错误:您输入的选项有误,请重新输入!");
                        break;
                }
            } else if (choice == 2) {
                System.out.print("请选择客车型号(1.20座考斯特 2.25座奔驰凌特 3.35座宇通客车 4.45座金龙客车):");
                int num = sc.nextInt();
                switch (num) {
                    case 1:
                        vehicles[index++] = new Bus("苏A00005", "考斯特", 20);
                        break;
                    case 2:
                        vehicles[index++] = new Bus("苏A00006", "奔驰", 25);
                        break;
                    case 3:
                        vehicles[index++] = new Bus("苏A00007", "宇通", 35);
                        break;
                    case 4:
                        vehicles[index++] = new Bus("苏A00008", "金龙", 45);
                        break;
                    default:
                        System.out.println("错误:您输入的选项有误,请重新输入!");
                        break;
                }
            } else if (choice == 3) {
                break;
            } else {
                System.out.println("错误:您输入的选项有误,请重新输入!");
            }
        }

        // 3.车辆选择完成之后指定租赁的天数
        System.out.print("请输入租赁的天数:");
        int day = sc.nextInt();

        // 4.打印共租赁了几辆机动车,租赁了多少天,总租金多少元
        System.out.println("------------------------------------------------");
        System.out.println("恭喜" + customer.getName() + ",租车成功,您租赁的机动车信息如下:");
        // 定义一个接收总租金的变量
        double money = 0;
        System.out.println("------------------------------------------------");
        System.out.println("车牌号\t\t品牌");
        for (int i = 0; i < index; i++) {
            System.out.println(vehicles[i].getNo() + "\t\t" + vehicles[i].getBrand());
            // 每遍历一辆机动车,增加这辆机动车的租金
            money += vehicles[i].rent(day);
        }
        System.out.println("------------------------------------------------");
        System.out.println("您共租赁了" + index + "辆机动车,租赁了" + day + "天,总租金为:" + money + "元");
    }

}
